/*
 * 代号：凤凰
 * http://www.jphenix.org
 * 2022年9月7日
 * V4.0
 */
package com.jphenix.standard.servlet;

import java.util.List;
import java.util.Map;

import com.jphenix.standard.docs.ClassInfo;
import com.jphenix.standard.servlet.api.IRequest;

/**
 * 请求类管理接口
 * com.jphenix.standard.servlet.IRequestManager
 * 
 * @author MBG
 * 2022年9月7日
 */
@ClassInfo({"2022-09-07 11:45","请求类管理接口"})
public interface IRequestManager extends IRequest {

    /**
     * 是否来自内置的服务器响应
     * @return 是否来自内置的服务器响应
     * 2022年9月1日
     * @author MBG
     */
    boolean isNativeServer();
    
	/**
	 * 设置路径信息
	 * @param webBasePath  网站根路径（文件路径）
	 * @param contextPath  上下文路径  /网站虚拟路径
	 * @param servletPath  纯动作路径  /文件夹/文件     weblogic返回空
	 * @param queryString  url中提交的参数
	 * 2016年11月24日
	 * @author MBG
	 */
	void setUrlInfo(String webBasePath,String contextPath,String servletPath,String queryString);
	
	/**
	 * 设置请求方式
	 * @param method 请求方式
	 * 2016年11月24日
	 * @author MBG
	 */
	void setMethod(String method);
	
	/**
	 * 设置提交的数据
	 * @param data 提交的数据
	 * 2016年11月24日
	 * @author MBG
	 */
	void setPostData(Object data);
	
	/**
	 * 设置内容类型
	 * @param contentType 内容类型
	 * 2016年11月24日
	 * @author MBG
	 */
	void setContentType(String contentType);
	
	/**
	 * 设置方案 http 还是 https
	 * @param scheme 方案
	 * 2016年11月24日
	 * @author MBG
	 */
	void setScheme(String scheme);
	
	/**
	 * 设置头信息
	 * @param key   头主键
	 * @param value 对应值
	 * 2016年12月11日
	 * @author MBG
	 */
	void setHeader(String key,String value);
	
	/**
	 * 新的实例
	 * @return  新的实例
	 * 2022年9月5日
	 * @author MBG
	 */
	IRequestManager newInstance();
	
	/**
	 * 往现有的url参数字符串中添加新的参数段
	 * @param subQueryString 新的参数段
	 * 2015年4月9日
	 * @author 马宝刚
	 */
	void addQueryString(String subQueryString);
	
	/**
	 * 设置上下文路径
	 * @param contextPath 上下文路径
	 * 2019年8月22日
	 * @author MBG
	 */
	void setContextPath(String contextPath);
	
    /**
     * 设置网站根路径
     * @param webBasePath 网站根路径
     * 2022年9月5日
     * @author MBG
     */
    void setWebBasePath(String webBasePath);
    
	/**
	 * 获取自定义头主键序列
	 * @return 自定义头主键序列
	 * 2016年7月13日
	 * @author MBG
	 */
	List<String> getCustomHeaderNameList();
	
	/**
	 * 获取自定义头信息容器
	 * @return 自定义头信息容器
	 * 2016年7月13日
	 * @author MBG
	 */
	Map<String,String> getCustomHeaderMap();
	
    /**
     * 设置缓存提交值
     * 2014年9月5日
     * @author 马宝刚
     */
    void setBuffered();
}
